package com.rongkang.interview.juc.lock;

import java.util.concurrent.CountDownLatch;

/**
 * @Description:     //秦灭六国，一统天下
 * @author: 荣康
 * @date: 2021/12/6
 */
//现在有这样一个场景，假设一个自习室里有7个人，其中有一个是班长，班长的主要职责就是在其它6个同学走了后，
//关灯，锁教室门，然后走人，因此班长是需要最后一个走的，那么有什么方法能够控制班长这个线程是最后一个执行，
// 而其它线程是随机执行的
public class CountDownLatchDemo {
    public static void main(String[] args) {
        CountDownLatch countDownLatch = new CountDownLatch(7);
        //这种情况，相当于班长走了，有的同学还没走，就把门锁了，关上了门，不安全
        for (int i = 0; i < 6; i++) {
            final int temp = i;
            new Thread(() -> {
                System.out.println(Thread.currentThread().getName() + "\t 走了");
                //加上这个之后开始计数
                countDownLatch.countDown();
            }, String.valueOf(i)).start();
        }
        try {
            countDownLatch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("班长走了，锁上了门");
    }
}



